Modeling tools provide a means by which various concepts can be represented in software. A modeling tool facilitates specification of concept characteristics as well as the relationships between those concepts. Many modeling tools are based on the Unified Modeling Language (UML) which includes a set of standard modeling concepts like class, interface, package, component, and many others that are part of a standard metamodel, also known as the “UML metamodel”.
A user creates model elements in a modeling environment to model the various concepts. Model elements are instantiated and assigned a type from one of possibly many available model element types. The model element type of a model element can invoke certain constraints on how that model element is used in the model, such as constraints on the types of relationships in which the model element may be involved, and the types of other model elements to which the model element may be related.
Occasionally, it is necessary to change the type of a model element to a different model element type. However, existing modeling environments do not provide an effective approach through which these changes may be accomplished.